{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd \n",
    "from tqdm.autonotebook import tqdm\n",
    "from IPython import display"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "Train_buf = 60000\n",
    "Batch_size = 64\n",
    "Test_buf = 10000\n",
    "Image_dim = (28,28,1)\n",
    "Train_batches = int(Train_buf / Batch_size)\n",
    "Test_batches = int(Test_buf / Batch_size)\n",
    "gen_unit = 64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.6.0\n"
     ]
    }
   ],
   "source": [
    "print(tf.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_images.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_images = train_images.reshape(train_images.shape[0],28,28,1).astype(\"float32\") / 255.0\n",
    "test_images = test_images.reshape(test_images.shape[0],28,28,1).astype(\"float32\") / 255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataset = (\n",
    "    tf.data.Dataset.from_tensor_slices(train_images)\n",
    "    .shuffle(Train_buf)\n",
    "    .batch(Batch_size)\n",
    ")\n",
    "test_dataset = (\n",
    "    tf.data.Dataset.from_tensor_slices(test_images)\n",
    "    .shuffle(Test_buf)\n",
    "    .batch(Batch_size)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<BatchDataset shapes: (None, 28, 28, 1), types: tf.float32>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "def lossCompute(xorz, isReal):\n",
    "    if isReal:\n",
    "        labels = tf.ones_like(xorz)\n",
    "    else:\n",
    "        labels = tf.zeros_like(xorz)\n",
    "    return tf.compat.v1.losses.sigmoid_cross_entropy(logits = xorz, multi_class_labels = labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "class GAN(tf.keras.Model):\n",
    "    \"\"\"\n",
    "    basic GANs\n",
    "    \"\"\"\n",
    "    defaults = {\n",
    "        \"gen_optimizer\" : tf.keras.optimizers.Adam(0.001, beta_1=0.6),\n",
    "        \"disc_optimizer\" : tf.keras.optimizers.RMSprop(0.005),\n",
    "        \"batch_z\" : 64,\n",
    "    }\n",
    "    def __init__(self, **kwargs):\n",
    "        super(GAN, self).__init__()\n",
    "        self.__dict__.update(self.defaults)\n",
    "        self.__dict__.update(kwargs)\n",
    "        self.gen = tf.keras.Sequential(self.gen)\n",
    "        self.disc = tf.keras.Sequential(self.disc)\n",
    "    def generate(self, z):\n",
    "        #print(self.gen.output_shape)\n",
    "        return self.gen(z)\n",
    "    def dscriminate(self, x):\n",
    "        return self.disc(x)\n",
    "    def compute_loss(self, x):\n",
    "        z = tf.random.normal([self.batch_z, gen_unit])\n",
    "        generatedFake = self.generate(z)\n",
    "        discFake = self.dscriminate(generatedFake)\n",
    "        discReal = self.dscriminate(x)\n",
    "        discFakeLoss = lossCompute(discFake, False)\n",
    "        discRealLoss = lossCompute(discReal, True)\n",
    "        discLoss = discFakeLoss + discRealLoss\n",
    "        genLoss = lossCompute(discFake, True)\n",
    "        return genLoss, discLoss\n",
    "    def renew_gradients(self, x):\n",
    "        with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:\n",
    "            genLoss, discLoss = self.compute_loss(x)\n",
    "        disc_gradients = disc_tape.gradient(discLoss, self.disc.trainable_variables)\n",
    "        gen_gradients = gen_tape.gradient(genLoss, self.gen.trainable_variables)\n",
    "        return gen_gradients,disc_gradients\n",
    "    def apply_gradients1(self, x):\n",
    "        with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:\n",
    "            genLoss, discLoss = self.compute_loss(x)\n",
    "        disc_gradients = disc_tape.gradient(discLoss, self.disc.trainable_variables)\n",
    "        gen_gradients = gen_tape.gradient(genLoss, self.gen.trainable_variables)\n",
    "        self.gen_optimizer.apply_gradients(zip(gen_gradients,self.gen.trainable_variables))\n",
    "        self.disc_optimizer.apply_gradients(zip(disc_gradients,self.disc.trainable_variables))\n",
    "        \n",
    "    @tf.function\n",
    "    def train(self, x_train):\n",
    "        # gen_gradients, disc_gradients = self.renew_gradients(x_train)\n",
    "        self.apply_gradients1(x_train)\n",
    "        \n",
    "    def call(self, x_train):\n",
    "        self.train(x_train)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# generator = [\n",
    "#     tf.keras.layers.InputLayer(input_shape = (gen_unit,)),\n",
    "#     tf.keras.layers.Dense(units=28*28, activation=\"relu\"),\n",
    "#     tf.keras.layers.BatchNormalization(epsilon = 1e-5),\n",
    "#     tf.keras.layers.Reshape(target_shape=(28,28,1)),\n",
    "#     tf.keras.layers.Conv2D(filters = 64, kernel_size = 3, padding = \"same\", activation = \"relu\", strides = (1,1)),\n",
    "#     tf.keras.layers.BatchNormalization(epsilon = 1e-5),\n",
    "#     tf.keras.layers.Conv2D(activation = \"relu\", padding = \"same\", filters = 32, kernel_size = 3, strides = (1,1)),\n",
    "#     tf.keras.layers.BatchNormalization(epsilon = 1e-5),\n",
    "#     tf.keras.layers.Conv2D(activation = \"sigmoid\", padding = \"same\", filters = 1, kernel_size = 3, strides = (1,1)),\n",
    "# ]\n",
    "\n",
    "generator = [\n",
    "    tf.keras.layers.Dense(units=7 * 7 * 64, activation=\"relu\"),\n",
    "    tf.keras.layers.Reshape(target_shape=(7, 7, 64)),\n",
    "    tf.keras.layers.Conv2DTranspose(\n",
    "        filters=64, kernel_size=3, strides=(2, 2), padding=\"SAME\", activation=\"relu\"\n",
    "    ),\n",
    "    tf.keras.layers.Conv2DTranspose(\n",
    "        filters=32, kernel_size=3, strides=(2, 2), padding=\"SAME\", activation=\"relu\"\n",
    "    ),\n",
    "    tf.keras.layers.Conv2DTranspose(\n",
    "        filters=1, kernel_size=3, strides=(1, 1), padding=\"SAME\", activation=\"sigmoid\"\n",
    "    ),\n",
    "]\n",
    "# discriminator = [\n",
    "#     #tf.keras.layers.Input(shape = Image_dim),\n",
    "#     tf.keras.layers.Conv2D(input_shape = Image_dim,\n",
    "#                            batch_size = 64,\n",
    "#                            filters=32,\n",
    "#                            kernel_size=(5,5),\n",
    "#                            strides=(1,1),\n",
    "#                            padding=\"same\",\n",
    "#                            activation=\"relu\",\n",
    "#                            kernel_initializer=tf.keras.initializers.truncated_normal(stddev=0.02)),\n",
    "#     tf.keras.layers.MaxPool2D(pool_size=(2,2)),\n",
    "#     tf.keras.layers.Conv2D(filters=64,\n",
    "#                            kernel_size=(5,5),\n",
    "#                            padding=\"same\",\n",
    "#                            activation=\"relu\",\n",
    "#                            kernel_initializer=tf.keras.initializers.truncated_normal(stddev=0.02)),\n",
    "#     tf.keras.layers.MaxPool2D(pool_size=(2,2)),\n",
    "#     tf.keras.layers.Flatten(),\n",
    "#     tf.keras.layers.Dense(units = 1024,\n",
    "#                           activation=\"relu\",\n",
    "#                           kernel_initializer=tf.keras.initializers.truncated_normal(stddev=0.02)),\n",
    "#     tf.keras.layers.Dense(units=1,\n",
    "#                           kernel_initializer=tf.keras.initializers.truncated_normal(stddev=0.02),\n",
    "#                           activation = \"sigmoid\"),\n",
    "# ]\n",
    "discriminator = [\n",
    "    tf.keras.layers.InputLayer(input_shape = Image_dim),\n",
    "    tf.keras.layers.Conv2D(\n",
    "        filters=32, kernel_size=3, strides=(2, 2), activation=\"relu\"\n",
    "    ),\n",
    "    tf.keras.layers.Conv2D(\n",
    "        filters=64, kernel_size=3, strides=(2, 2), activation=\"relu\"\n",
    "    ),\n",
    "    tf.keras.layers.Flatten(),\n",
    "    tf.keras.layers.Dense(units=1, activation=None),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = GAN(gen = generator, disc = discriminator)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:08<00:00, 112.88it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 92.72it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0 | disc_loss: 9.136937734188777e-12 | gen_loss: 25.613445281982422\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 136.72it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 95.73it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 1 | disc_loss: 1.3038303076085e-12 | gen_loss: 27.366918563842773\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 137.25it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 93.87it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 2 | disc_loss: 11.7298583984375 | gen_loss: 0.007664219010621309\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:07<00:00, 130.75it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 94.49it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 3 | disc_loss: 0.7065750956535339 | gen_loss: 1.3416568040847778\n"
     ]
    },
    {
     "data": {
      "image/png": "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nNZcaHTpDE+XK9Lzst//SpN+71MedXwefPDBqO2xxx6zeODAgRYXctqpN378eIsHDx4ctaUaYz8Gmmrqz2Xad86cORb7Y3jbtm0tzub48GQRAAAAAJDAzSIAAAAAICFn8vH849UGDRpYrLNe+tSK999/3+ImTZqU6LN0tsAQQti6davF+gjYf5amCvg2TZvt0KGDxZ07dy7RNuH/adpx7dq1o7ZU6ckhxLPQbt++3WI/E1hFpf8OnxaqKQ3+e9GUJk099ftcjx49LNZ0prLQt29fi/fs2RO16XZpfM4550T9RowYYXEhp52mm3HNt2l6k+5LmeBnLr7jjjss3rJli8V+f9Qx7tOnT8o2FG/atGkWjx49OmqbOHGixW+++WbK99DZMf0xF+XPz/KuMy7qPl1UVBT1++IXv2jxT37yk6itYcOGmdzE8M1vftPiLl26RG06s2sh8OfcT/jjV61atSweMGCAxa+99lrU77nnnrN41KhRUZumsuos4CtWrIj66XVtulk6ly9fbrH/dxTaTOKatq/7oE871e9TU659iZOWq/nvVs+Xevz1JUC//e1vLb7qqqvSbn9Z4skiAAAAACCBm0UAAAAAQAI3iwAAAACAhJypWfSmT59u8SWXXGKxzx0+99xzi/17nyuervZF84x1WmovXW2Q5hVrvn4h11KdCs2v/9WvfmXx+vXro346Br5u78MPP7R4//79FudL3VNJp9P2U+TPmzfPYv1e/G9z586dFqf7rZeGz9efOnWqxX589N950UUXWeyXevjc5z6XwS2suPz3p99L8+bNo7YNGzZY/Pjjj1vcv3//qJ+OwY4dOyweM2ZM1O+BBx6wON2xU7fR18FozUfLli1TvgeKp8fBu+66K2q7/fbbLb755pstnj17dtRPa/DHjh0btfk6UpS9d955J3qd6hzmj4E6H0OqJYhOxzPPPGPxsmXLLH7hhRcy/lkViZ5za9asabGvYdN5FfR82759+6if1rP5cdRzuNaCn8p4pzoeF8KyYlozv2bNmqhNl/HSaxadQyWEEOrXr2/x97//fYv9sVLHZ/jw4VGbjvHBgwdTbpPWBuv5O4TyXVqKJ4sAAAAAgARuFgEAAAAACTn7zPmCCy44rb/3aXT62qd0aPqU9kuXiveZz3wmen3bbbdZnOkp6fOR/251uvbzzjvP4nRLRPg0Sp1S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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 140.40it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 97.37it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 4 | disc_loss: 0.693351686000824 | gen_loss: 3.170741558074951\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 140.77it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 93.26it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 5 | disc_loss: 0.7250137329101562 | gen_loss: 1.541263222694397\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAABtCAYAAAAI5vRhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYdklEQVR4nO3daZBU1RnG8YMRVDaDgA67ICBiGGIiKnFBSEzcS00kRhONQggmYFDjgsatwA1D1KiUIVpuUSzcKDWgBnUIMoIVI6sgi4E4gCyiyOaMEvLBqpfnPXe6maW7Z6b7//v0tOfMzGHu3Nt9ve85p9GuXbsCAAAAAABqr7oeAAAAAACg/uFmEQAAAACQwM0iAAAAACCBm0UAAAAAQAI3iwAAAACABG4WAQAAAAAJe++hnX016k6jTH2jXbI/SqNGGfu2qJpM/sI5H+sO52N+4DjmB66r+YHjmB84jvkh5XHkySIAAAAAIIGbRQAAAABAwp7KUJEHKJEC6g/Ox/zAcQQAFAKeLAIAAAAAErhZBAAAAAAkcLMIAAAAAEjgZhEAAAAAkMDNIgAAAAAggZtFAAAAAEACN4sAAAAAgARuFgEAAAAACdwsAgAAAAASuFkEAAAAACTsXdcDqAsVFRXu9QsvvGD5mmuusbxu3TrXb86cOZaLi4uzNDqgsOzatcu9btSoUR2NBAAarvXr11vu1KmTazv22GMtv/HGGzkbE4CGjyeLAAAAAIAEbhYBAAAAAAkFU4b6xRdfWF64cKFrGzp0qOUdO3ZY/t///uf6vfLKK5YpQwVq7o477rA8ZswY11ZaWmq5b9++ORsTciO+ru61F//PMh/ocZ00aZJrO/fccy03adIkZ2MqNMcff7zlL7/80rV16dIl18NBGvH0CzVr1izL8fVy+PDhllu0aGG5efPmrt/1119vedCgQTUeJxACTxYBAAAAAJXgZhEAAAAAkJBXZaj6WD8uwSgvL7d87733ujZdfVEf+cerMpaUlFi++uqrazVWoJBNnTrVcnyubt68OdfDQRbotbRXr16Wly1b5vrp38Ipp5yS/YEVqJ07d1petGiRa5sxY4bl119/3bW1a9fO8rhx4yw3bdrU9dNVxUeMGOHa3n//fcu33nprdYaNNOJSxhUrVqRs69atW07GVOjWrl1rOf6s2bNnT8taqt2sWTPXb9q0aSm/v57Heo3db7/9XL9HH33U8sCBA10bK45njn5+efrpp12bHuN4+ttFF11kWe9P4nuL1q1bW67L48aTRQAAAABAAjeLAAAAAIAEbhYBAAAAAAkNbs7ixo0b3evFixdbHjJkiOUDDzzQ9dN6/YqKCte2fft2y1oTHNcHn3zyyTUYMariq6++slxWVmZ569atrt/48eMt33zzza6tY8eOlr/xjW9keITIJJ0zFS8NPmfOHMsnnHBCzsaEzNJz98MPP7QcX1eLiopyNqZ8t3LlSvdaz6WJEyda1vfNEEL45JNPLMfXzpYtW1ru0KGD5fi8ffXVVy3H844POuigPQ0dNbBp0yb3Wuezxb75zW9meTSFS8+niy++2PL8+fNdP53flu5Y6TVy7739x/RUW27o9nAhhHDUUUel/BrmLFZP/LvV8063AXv55ZddP/0sGx+D22+/vdKfFc9zPfXUUy3fdNNNri3V1mLZOL48WQQAAAAAJHCzCAAAAABIaBBlqB999JHlSy+91LW9/fbblvVxffPmzV0/XX62tLTUtekjWy0NiB/lsvR07ehj+Hfeece1DR8+3LIe723btrl+ekx0qfYQQhg7dmyl3y8u40Dubdmyxb3esWOH5SZNmri2M844IydjQmbFZTZz5861rCWL8TLxxcXFWR1Xvnv22Wct//a3v3VtnTt3ttymTRvLr7zyiuun22O0atXKtWlZql5/4+Pdvn17y3GZ63nnnZf6H4AaO/LII1O27bWXfxbw61//OtvDyWv//Oc/Lcd/zxs2bLCs17p0nz20TafhxOJyVS0n1vfR2Mcff2w5/ltA5bRMeMyYMZb/9Kc/uX76e9frYHzPkGpbvvjr0v33l156yfLy5ctd2/Tp0y23bds25Tgygb8gAAAAAEACN4sAAAAAgARuFgEAAAAACfV2MpfW944cOdLy66+/7vppjfHjjz9u+eyzz3b9tOZ43bp1ri1VzfG+++7r+qWbH4A9++CDDyz/+Mc/dm261Hq8tYlq3Lix5XiJ9xtvvNHyD37wA8uHHnqo68ey0bk3efJk91qPsdbah5Dc9gYNQzwv9Uc/+pFlvcaedtpprh/b3FSfLuU+dOjQlP2mTp1qWeciZmIed3wdff755y3HW2fo9lSonfLycss6vz924YUXutfx3HBUj25DE2/hpvT9K96uRLf36t27t+X4Gqjzf9ev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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 138.87it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 95.08it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 6 | disc_loss: 0.6254246830940247 | gen_loss: 2.292844295501709\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAABtCAYAAAAI5vRhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXhklEQVR4nO3debDV8x/H8Xdp0b6TVmO5qDSUitI61KDQYBpZ06bGmKwZIQmVZA2TGjVZYjLIvmVKaRWihQpNllK3bnXbVPT74zfe3u/P997j3HvPds99Pv56fX0+7v06n/v9nvN13p/Pp9yRI0cEAAAAAACrfLpPAAAAAACQeXhYBAAAAABE8LAIAAAAAIjgYREAAAAAEMHDIgAAAAAggodFAAAAAEBEhf9oZ1+N9CmXwJ/FOKYP45gdGMfswDhmB8YxOzCO2YFxzA6FjiPfLAIAAAAAInhYBAAAAABE8LAIAAAAAIjgYREAAAAAEMHDIgAAAAAggodFAAAAAEAED4sAAAAAgAgeFgEAAAAAETwsAgAAAAAieFgEAAAAAETwsAgAAAAAiOBhEQAAAAAQwcMiAAAAACCiQrpPABAROXLkiOaLL75Y86effur6DRw4UPPkyZOTf2JAGfT9999r/vrrrzU/+OCDrt/GjRs1//nnn66te/fuml9++WXNxxxzTKJOE4FDhw6548WLF2v++eefNc+ePdv12717t+alS5e6tmHDhmmeOHGi5ooVK5bsZAEApQLfLAIAAAAAInhYBAAAAABElLPlfwWI2YikKpfAn5Xx42j/Dtu3b6/5m2++cf2qVKmi+Z133nFtXbt2Tc7JlUyZGsfiWLhwoTv+8MMPNY8dO1ZzuXKJfCmLLKvH8fDhw+64X79+mt966y3Nf//9d9w/86ijjtLcuXNnzXZ8RUQqV64c989MgKwbx23btmn+448/XNuAAQM023tp+fL+/xMfPHiw0J9vy02vueYazc8//7zrZ8c7BbJuHK3wc9nevXs1z5o1S3O9evVcPzuFo0KFUjHLKOvG8a+//tI8evRo1zZ16lTN9v0svAeOGDFCczjGa9eu1Txq1CjN1atXL94JJ0bWjWMi2PtqpUqV0ngmcSt0HPlmEQAAAAAQwcMiAAAAACCi1JWh5ufnu+MXX3xR88qVKzXn5ua6fna1t3Xr1rm2bt26aZ42bZrmNK/2Vqa+1rd/h7YE7s0333T9bOnGOeec49rmz5+fpLMrkTI1jvF6/PHHNY8fP9612ZKr3r17aw5X4mzevLnmFFyrWTeO9ppbsGCBazvvvPM029LTVq1auX45OTmaw3uzXVHVrtL566+/FvOMEyIrxtG+nnv27NFcq1Yt1++NN97QbF/3Xr16uX433XST5i1btri2nTt3at6/f79mu7pqQb87yUrlONrXT8SPiV1ZOCz3fvfddzV/9NFHmn/55RfXz07FCKdpZOjqtaVyHEP2XmdLSMPPJKeeeqpmu3p0+Dm8YcOGmr/44gvXZqfpzJs3T3Oay46zYhwtOz7Tp093bXZqhr0G169f7/rZ8uIlS5a4tpYtWybiNBONMlQAAAAAQPx4WAQAAAAARPCwCAAAAACIyNg5i7Zmf/ny5ZqvvfZa12/Tpk2a7fLv4TL7sf477VyLO+64Q/Mtt9zi+tma/xQs4591NeDxmjt3rubLL7/ctdm5p7feeqtre+SRRzSneZsFq8yOo/X222+7YzsvNVy2v3HjxpoHDRqk+b777kvS2cUl68Zxx44dmps1a+ba7LxRew2+8sorrp+dJ2PneIj4e/V7772nuW3btq7f559/XpTTLqmsG8dEsPMUw/e9ZcuWabbvt+G8ulWrVmk+7bTTEn2KobSP4759+zTHer+xn0tWr17t2ux1Zq/H8H75wQcfaLbXWXjvtL+rb9++ru21117TnOJtTmJJ+zgmwumnn67ZzuW1Wz+JiNx8882aY42B3X6jR48erm3RokWa7VY5devWLcIZJ1xWjKN9Tpg0aZLmyZMnu3527vHRRx+t2X4+FfHzye22byL+ftm0aVPNmbpFGN8sAgAAAAAieFgEAAAAAESkda3dWOwys927d9cclpPar+tjiVWGun37ds133XWX5lGjRrl+tlyqY8eOcf1eFF27du002yWkRUR27dqlee3ata4tg0pPIb5casiQIYW2haXlU6ZM0WyXnkZijRw5UnO4pL+9liZMmKA51vL7thxHRKRFixaa7RY4tgQZmaF+/fqa27Rp49rsNBBbehqWodpyuZ9++sm1hSVYpVH4GcKWkNapU0dz+D5k/9s7dOjg2mxf+/PtlkEi/n3PbqVg/7mIyNChQzXbbVNERL788stCzwNFE37uHDNmTIH9Lr30Undcvnx838/YEtUmTZq4tkaNGmm2f4NpLkPNCnYLKbvtiX2vFPGfUW2Z/uDBg10/ez3OnDnTtdnPRO+//77mTP0cyzeLAAAAAIAIHhYBAAAAABE8LAIAAAAAIjJm64zwPNq3b695xYoVmhs0aOD62fmGsebT1K5dW3M4f2Lnzp2a8/PzNdtlqEX8nJzZs2e7tnCOQQJkxVLExfHLL79oPvHEE12bnSdjt8oQiW6lkSHK1Dja69gu1d6/f3/Xb+DAgZqfeOIJ11atWrXknFzJZN04nnvuuZrtcuwi/n5pl2ePdY8N2e04Nm/erHnjxo2un90qJQWybhwTzS73LuLH7oILLtAcjqO9N9vtqERE8vLyEniGIsI4iojId999547POusszeG2GtOnT9d8/fXXJ/W8iiArxtG+7yVizpn97GnHVERk69atmleuXKk5/GycYlkxjnYOqH2vq1SpUrF+nr3v5eTkuDb7vjdv3jzN9r03Ddg6AwAAAAAQPx4WAQAAAAARGbN1xrRp09yxLXGJtXy+LXW65JJLNNulrEVEunXrptmWuIqIVKjw78tgt+y48MILXT+7vPxTTz3l2mx5jl32GEW3bt06zWEpcM2aNTVfccUVKTsnxMeWsA0fPlxzeA1PnDhRc4aWnWY9u/x7uO3FCSecoDne0tOFCxe6Y1u+ePfdd2tOcdkp4mBLSMO/hZNOOkmz3a4oLF222wTYrXFERHbs2KGZJf4T595773XH9poOyyFbtWqVknMqixK93cGWLVs0h9ujHHvssZrDaxUlU7VqVc2JGNMNGzZoDp8LbDnxjz/+qLlt27Yl/r3JwDeLAAAAAIAIHhYBAAAAABFpLUOdOnWq5ttuu8217du3T3OscqlnnnlGsy1DLcqqfZZdITA3N9e12VWp5s6d69ratWunefny5ZopSS268HW3bGlAcVeoQuKEqxhfffXVmnfv3q35lFNOcf2Ke32iZNavX6/ZlnuHKyfeeOONcf28AwcOaO7Zs6drs+X9tnQKmad8+fIF5pC9brt06eLa7LX/3HPPuTY7beP+++8v7mki0LlzZ3c8Z84czeE4tmnTJiXnhKKzZeAiIn369NFsV4cXEbnuuus08z6aWIkuJ7bPArYUPzRr1izN4XWa6HMqLr5ZBAAAAABE8LAIAAAAAIjgYREAAAAAEJHSOYujRo1yxy+88IJmO0dRxNfp1qtXT/OMGTNcv4suuqjAfycZqlSpojmcL7dy5UrNzFMsup07d2p++umnNYdz4s444wzNDRo0SPZp4T/Y5Z9FRD755BPNduzC6zve7TIOHTqk2c6PExGpUaNG3OeJ/xs0aJBmO4eif//+rt/AgQPj+nn5+fmaw+0S7NyLYcOGFek8kfnC91u7bU543549e7Zm5iyWjH1tn3zyyUL7nXrqqe441lxUpN5vv/2m+Z133nFtq1ev1hxuO9WrVy/NbJ1RMnaLPhGRJk2aaLZz7ovr888/1xzOS7X3z99//73Af55JuHsAAAAAACJ4WAQAAAAARCS9DNWWTCxcuNC17dq1q8B+Iv7r4MmTJ2u2Zaciyf3KNizb2LZtm+aw1NQe29I5ljaOj339VqxYoTkcX1vORFlN+tlrWMSXbtgxDbdO2L9/v2Zb3h2y1w/XUtHZbYdERDZs2KDZXls5OTmun70f2/zxxx+7fq+88ormOnXquLa33367wN+F1AnfV/+RiPEIf3aPHj00z5w507XFusZRNIsWLdL866+/ujY7rrFKVJFYhd0v7fZRIr4s0U63sf9cxN+3GzZs6NrOPPPMkp1sGWdf2379+rk2O7XJbstXv359189+FrGfQ20pvojImjVrNIf3XHvctGnTAs9PJHOmtfFpGwAAAAAQwcMiAAAAACAipauhhisP2a9bw5WH7Eqp3bp105zscia7YlFeXp5r27t3r+aDBw+6tuuuu04z5XJFZ1eDsq9tuOJpWOqG1LNlNu+9955rs9exXb20ZcuWrh9laakRlmr37NlT80svvaR57ty5rt8HH3ygecuWLZrtqsUi/h7eokUL11azZs2inzBKJCwNHT16tOZnn31Wc1gmeuGFF2oOy6BsqeOmTZs0n3POOa6f/dtq1qyZa5s0adJ/njsKZ8sZe/furTkc75NPPlmz/dyEktu8ebPmW2+91bXZFUvtyvjh/XL79u2a7erR4TVnVzm96667XJv9W2A11KKz08TstAwRkfXr12t+/fXXNV911VWun11JvFGjRprte6qIyM8//1zoedjr86abbtKcqVM2+GYRAAAAABDBwyIAAAAAIIKHRQAAAABARNLnLNol8kO2TjusvbfznWzddzgf0NaA2xwuLxzvNgv295599tmuLTc3V7NdJlzEb++BoluwYIHmSpUqae7SpYvrlynLCJdldl6vnZ8hIlKjRg3NdqzsfF8Rf71nao1+Nghf24ceekiz3QZj1apVrl+4Jco/wuvPzplZt26da7PzeJA89nocOXKka3vsscc027+FcMl4O9fNzlEVEZk+fbpmez+2c65E/HzytWvXujbmVhVN+Hlo+PDhmu3y/OHnGtsvXAcCJWO3fxo6dKhre/HFFzWHa3NYhw8f1mw/y9prWMSP67333uva7BZ0dq5b+HmVrcUKZt+X7L1NROTNN9/UbNdZOOaYY1w/u52JfWaw/37YZj8biYi8+uqrmuvWrRvXuacTf00AAAAAgAgeFgEAAAAAESmtU7BfyYr4r4PtcrYiIvPmzdO8bNkyzbZcUcSXwdWrV0/z119/7fpVrVq10PPat2+f5o4dO2q2S4aH52vLDsI2FJ0dY1uqEf7NIP1siVT16tVdmx0vu8S3LXkUofQ0Xewy3/fcc4/mBx54wPWz42PLwm35jYifZmCXExcR+eGHHzSHW6cgcZYvX675qaeecm1heds/7HueiMh3332nOSwZXbRokeZOnTppDkvQ7VYalMAllt3Kxk7f6du3r+s3YsSIVJ1SmWP/psNtSbp27aq5VatWmtesWeP6zZ8/X/NPP/2kOSw7ttdt2DZnzhzNH374oebwb+GZZ57RTBn4v+x728UXX+za7LY08d7D7HNCeE+0v2vKlCmurTSUnlrc0QEAAAAAETwsAgAAAAAieFgEAAAAAEQkfc5ilSpVNF9++eWubcaMGf+eSLDM89KlSzUPGzZMc4cOHVw/W/drlyKONUfRzokTEXn44Yc1f/vtt5rDZeK/+OILzeHcHZSMXXbdzsmoVatWOk4HMdjrIpwTZefE2aX1Dx486Pp98803ms8444zEniDiYu+rxx9/vGt79tlnNdttgoYMGeL6DRo0SPNrr73m2i644ALNmzZtKtG5wrP3yPHjx2sO5zdZdt5SeD3GmofcunVrzfa6bd++vevHPMXECed022vJXmd33nlnys4JhbPjZe+XS5Yscf3sPEV7DYefNW+77TbNxx13nGuz2xzZ6/GEE05w/WbPnq35sssuc22xPh+XZfHew+waK7fffrtmu82fiEjPnj019+rVq2Qnl2bc3QEAAAAAETwsAgAAAAAikl6Gar+eb968uWtr3Lix5t9++8215ebmau7Tp4/mWF+fx1qO35aezpw507U99thjBf47bdq0ccdt27Yt9OejaMIyKLvMvi0FsOU3yAx27PLz812bLT21pTW25EaErTMyTVgic95552m25f2hadOmabbLuIv4bTXs34zdigPFs2XLFs0LFy7UbMv5RUTy8vIKbLv//vtdv9NPP11zWPrfokWLEp0rSu7qq6/W/O6772pmOkxmsO97tvQwLEsM3wf/ce2117rjcCsjpFdY3m/LhO22NuF72/DhwzXXrFkzSWeXGnyzCAAAAACI4GERAAAAABCR9DJUq3v37u541KhRmsNVFW3JauXKlTXHW74Wrnj60ksvaR46dKhrs6UBdsW4qVOnun6UziVO+HX9/PnzNZ9//vmabQkyMoMtSwxLK7Zu3ao5JydH8++//+76hdcn0itcBS7eVeFmzZqleffu3a6tdu3amrl3JtaaNWs079ixQ3NYhmpX7bOlcn/88Yfrd8MNN2gOVyZH+n3yySea9+zZo7lGjRrpOB0EHn30Uc229NtefyE7TaNv377JOTEkxIEDB9zx4sWLNdtxDKeuhc88pRnfLAIAAAAAInhYBAAAAABE8LAIAAAAAIhI6eSEJk2auGM7F9Eusx6yNcEhu3T/xx9/rPmNN95w/V5//XXN4Xwpux2HnRvQunXrQn8vSiZcitjOG/3+++81V69ePWXnhPjY+WfhPDV7PW7YsEFz7969XT+2ockOkydP1hzOOx83bpzmWNtv4L/t27fPHffr10+zfd3DpfqtCRMmaL7yyitdG/MUM9uXX36p2b53rl692vXr3Llzys6pLNu8ebM7HjNmjOZY8xTte6fdnih8f0Rm+eqrr9zxqlWrNNvProMHD3b9qlWrltwTSyG+WQQAAAAARPCwCAAAAACISGntyXHHHeeO27dvr9lunSAi8umnn2pu2LCh5rDszX4FHJY2Wvbrf1vCIyLyxBNPFPi7kB6NGjXSHO8S/kgdey2FZU9z5szR3KVLF80DBgxI/okh6cJyyAYNGmgOSxnDUkcUn51iIVJ4ual9PxQRqVKlimY7HtlUHlUW5ObmFvjP7fZESJ21a9e64/C6+0fdunXd8bBhwzSPHj1aczq3FrKfm9niqGDhVm/2dbJTarp27Zqyc0o1PokDAAAAACJ4WAQAAAAARPCwCAAAAACISOt62bZme+TIka7NLk2bl5cX189r06aN5muuuca1nXzyyZrtksUisbfmQHLs2bPHHdesWVNzt27dUnw2KC47biIif/75p+alS5dqrl+/fsrOCcnz1ltvueN169ZpPvbYY12b3RoJRWe3xOjfv79rK2x+fji3ZvHixZqZp1h62a1n7HypWNs0IHnq1Knjjlu2bKnZzhOeOHGi69epUyfNmfK588CBA5qPPvpo18Ycxv/77LPP3LHdfs/ec5s1a5ayc0o1vlkEAAAAAETwsAgAAAAAiEhrGapdZnbmzJmubcqUKZobN26seciQIa5f1apVNbPNQukRLrO/d+9ezV999ZVmW4olwhhnmu3bt7tjW55hS6RseSpKF1vyuGvXLte2bds2zRMmTHBtYUkkisaWgMV7/WzevNkdh0v3o3Sy03Isu3UNUufMM890x99++22azqTkbNksChZuVWQ/vz7++OOas/nzafb+lwEAAAAAio2HRQAAAABARFrLUK2cnBx3PGnSpDSdCVIhXMXNrpw4ePBgzazGldk6dOjgjmvVqqXZjvGKFStcv7CMB5nLlqGOGzfOtdkxttMFUHL2tS1s9VMRkbFjx2qm7DQ79enTR/PGjRs1s+IwkHzh+154XBbwzSIAAAAAIIKHRQAAAABABA+LAAAAAICIcrHmQohIzEYkVSIn6zGO6cM4ZocyO4779+/X3LFjR9dmt8dYvHixa8vQZcRL5TgeddRR/heb9+38/HzN1apVS9UppVupHEdEMI7ZgXHMDoWOY0a+mwMAAAAA0ouHRQAAAABABGWomYuv9bMD45gdGMfsUCrHsWLFiu44Ly9Pc/Xq1VN1GpmkVI4jIhjH7MA4ZgfKUAEAAAAA8eNhEQAAAAAQwcMiAAAAACCiQrpPAADKqr///tsdHzp0qNC+lStXTvbpIIPY9QQWLFjg2sroPEUAQBrwzSIAAAAAIIKHRQAAAABAxH9tnQEAAAAAKIP4ZhEAAAAAEMHDIgAAAAAggodFAAAAAEAED4sAAAAAgAgeFgEAAAAAETwsAgAAAAAi/geBCmD0ZLtQZgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 135.61it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 97.69it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 7 | disc_loss: 0.7278676629066467 | gen_loss: 2.264172077178955\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAABtCAYAAAAI5vRhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXEElEQVR4nO3deZSP5f/H8UuZxESomayDSMhRqZCoIwodyqHiKJElWjQt0iaNc5CTLKfQaVGdVsppsRykUZZihDakppClIUvWwaj8/vie37v3+7rnM82YzzKfzzwff73u73WZub7dc9/35z6f93VdZU6ePOkAAAAAANBOi/UAAAAAAAAlDy+LAAAAAIAAXhYBAAAAAAG8LAIAAAAAAnhZBAAAAAAE8LIIAAAAAAgo+x/t7KsRO2XC+LM4j7HDeUwMnMfEwHlMDJzHxMB5TAycx8QQ8jzyzSIAAAAAIICXRQAAAABAAC+LAAAAAIAAXhYBAAAAAAG8LAIAAAAAAnhZBAAAAAAE8LIIAAAAAAjgZREAAAAAEMDLIgAAAAAggJdFAAAAAEAAL4sAAAAAgABeFgEAAAAAAbwsAgAAAAACysZ6AEBBVq9ebY67du0qec6cOabt8ssvj8qYAAAAiiI3N1fykCFDJFeqVMn0mzJlStTGhPDZt2+fOb7hhhsk79q1y7S1bdtW8tixYyXXrFnT9CtTpkw4h3jK+GYRAAAAABDAyyIAAAAAICDuylDz8vLM8T///CM5Oztb8tq1a02/DRs2SF6/fr1pW7FiheRDhw5J9ksB7rrrrlMYMYrqxIkTkjMyMkyb/io/NTU1WkMCgIRx3333mePZs2dLPnjwoGmbMWOG5E6dOkV2YEAcOnDggOTffvtNcnp6uumnP79s3bpVsv/Zctu2bZJr1Khh2k4//fTiDRYRs2jRInP83XffSU5KSjJtQ4cOlaw/y5aUslMf3ywCAAAAAAJ4WQQAAAAABMS0DPXkyZOSjx8/bto+/fRTyWPGjJH8zTffmH5nnXWWZF1CWrlyZdPvjDPOkJyTkxNyHJpfroro0CtKrVy50rSVLfvvn+yXX35p2tLS0iI7MACIU3v37pXsPx937Ngh2X8e6lIqylBRWh05ckTyzJkzTdvChQsl65VN/c8oeorNaaf9+13N5MmTTT89Neqjjz4ybdWqVSvCqBFp+pxmZWWFbLviiitM20UXXSRZv5+UVHyzCAAAAAAI4GURAAAAABDAyyIAAAAAICCmcxbnzZsn+c477zRtevluXffrO3z4sOQ+ffpIfuSRR0y/+vXrS168eLFpGzBggGS9tLG/vDiiY+TIkZL1/EXn7LLRl156adTGhPz99ddf5nj8+PGS9VY2KSkppp++pv3z2LNnT8nxUMsfr/7++2/J/nLdej4N4pd+jnbp0kXymjVrTL/y5csX6mcgvPR/23vuuUeyvzaD/lwyf/58yc2bNzf92FYhcvT9csGCBaZNH+tnot7azTl7fmrXri35999/N/30Wg2DBw82bR9//LHkkrrNQmny/vvvS546dapp03PD9Wcj55yrUKFCRMcVbnwiAAAAAAAE8LIIAAAAAAiIahmqXnrYOed69eolOS8vL+S/01/X1qlTx7Q9+OCDkvv37y+5oDKqa665xhz/8ccfknXZW7169UL+DITX7t27JesyC38Zd71VCucnevT50cuBb9u2zfTTJd5ff/21ZL8cRx8nJyebNl2CNXr0aMnxVrZREh07dkzyoEGDJPtbF+nl3/W91L+Hn3/++ZK7d+9u2vS9umLFipL90uXnn39ecuvWrU1b27Zt8/l/gVD8+2WPHj0k6+sxPT3d9Lv++usl678L5wp+NuO/6XudX26YkZEhWZeX7t+/P+TPa9eunWT/etHXZ4MGDUybnt6hp+WgcPQ9UV9XzjlXo0YNybq0uF+/fqafPid79uyRPGfOHNNv4sSJkj///HPTtmnTJsmcx9jQZfzDhw+X7N8r7733XsmXXXZZ5AcWQXyzCAAAAAAI4GURAAAAABDAyyIAAAAAICCqcxbLlStnjs8991zJHTp0MG26Fvvaa6+V7C+zX9il9fVcndTUVNOml0QeOnSo5LJlY7qzSKkyefJkyXp+nK93796S/b8nFE9ubq5kf07G6tWrJev5NP5cRH09Vq1aVXKTJk1Mv+3bt0v25xe/8847kvU2Gi1btixw/AjasmWLOdb3T30e/SXY/blvoeh/p+eXOmf/FqpUqSK5TZs2pt9nn30muX379qaNOYtFs3XrVnOs5yk+99xzku+//37TT59Hfx7U+vXrwznEhKTvg8uWLTNtehsEfQ6cc27v3r2S9TXnb4Gh5//qfkuWLDH99L/79ttvTdvcuXMl63nhaWlpDkWjn0v5HReGnufY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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 139.44it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 96.41it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 8 | disc_loss: 0.8008017539978027 | gen_loss: 1.737997055053711\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAABtCAYAAAAI5vRhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAY5klEQVR4nO3de7TVc/7H8XdIcTrpRhGVSCmJNZGI3NbMYFR0ITNDSx1mCTMthVrUWsqQTIqh0WWoOaMpa2gwqFVTVC61lGJKg6MLSnShyzkpmT9+v3l7vz/fs7d9zvnusy/n+fjrtX0+7fOZ8zl77+939vvz+dT6/vvvBQAAAAAA65BMDwAAAAAAkH24WQQAAAAARHCzCAAAAACI4GYRAAAAABDBzSIAAAAAIIKbRQAAAABAxGE/0s65GplTK8bnYh4zh3nMD8xjfmAe8wPzmB+Yx/zAPOaHhPPIN4sAAAAAgAhuFgEAAAAAEdwsAgAAAAAiuFkEAAAAAERwswgAAAAAiOBmEQAAAAAQwc0iAAAAACCCm0UAAAAAQAQ3iwAAAACAiMMyPQAAAIBkdu3apbmwsDCDIwGAmoVvFgEAAAAAEdwsAgAAAAAiuFkEAAAAAETU+v7775O1J23MF7fccovmU089VfNtt92WieH8T60Ynytn57F169bu8c6dOzU///zzrq179+7VMaSKYh7zA/NYju+++07z9OnTXdvMmTM1r1y5UvP8+fNdvzPOOCM9gysf85gfmMf8wDzmhxo7j6WlpZrD+6latX74tRx++OGu7dBDD03vwCon4TzyzSIAAAAAIIKbRQAAAABARI05OuPbb7/VHJYvPvPMM5qHDh2qOdlXykifPXv2aP76669d244dOzTPmzfPtWVLGar9u+FvpmoOHjyoedy4ca5t8eLFmuvWrevaevfurblfv36as7T0I2cdOHBA87333uvatmzZotm+DiZPnuz6PfHEE2kaHSpj69at7vGIESM0P/bYY5qPOOKIahsTMsN+FouIfPnll5pbtWpVzaPJL7Z8cd++fa7tt7/9reaPPvrItRUUFGhu2rSp5j//+c+uX+3atWMZJ/x1iIjII488ovmBBx7QHF6v2mvB5s2bu7ZFixZpPvHEE+MYZlrxzSIAAAAAIIKbRQAAAABARI0pQ7Vf+b/77ruuzZao2jKbe+65J+3jQtSKFSs0b9++3bUdcsgP//9GuLtUtti/f7/mbB1jVXz44YeajznmGNdWXFys+f3339fco0cP1+/MM8/U3KxZM9dmSz7WrFmjOSyzseMIrVu3TnPfvn0T9kPV2DLU+vXru7YvvvhCs901tUmTJukfGCrEvs9ee+21rs2WS9myqmnTpqV9XEi/sHRu0KBBmufMmePaOnTooDm8jkKUfd8TEZk0aZLmO+64I+G/s6Wmdgd4Ef8atNdDEydOdP0aNWpUobEisXDJk12uZoXLjho2bKh548aNrq1t27aaR44cqTlb7zv4ZhEAAAAAEMHNIgAAAAAggptFAAAAAEBETqxZtHXfld36vrCwUHPXrl1d24QJEzTb7W3tWkaR/Fx/li3Kyso033///ZptTb6IyGGH/fAnG66nGDVqVHoGV0H5fjyDrd+3W3yLiDRu3FhzmzZtNNvtpUVEGjRokPD57ZzfeeedmsMt/e3ajeOOO861zZgxQ7P9m0G87Pbsdo2iiJ8f+5o49dRT0z8wRNi11Js2bXJt9kiEkpKShM9h17MhfeyxMyIiu3bt0mzfVyvLrjf85S9/6drWrl2rOVyDdcMNN1T5Z+e7bdu2ae7Tp49rs8c92bX54TWDPUojnIOBAwdqHjJkiGbWKMbL3nfMnTvXtdn5Ou200zT//e9/d/3skRjh69a+z9rj+1izCAAAAADIGdwsAgAAAAAisqY+y34lLyKyZMkSzfZr3sp+1W5L28ISD1uek+/HHmSLsMR38uTJmufPn6/5yCOPdP327Nmj+dhjj03T6Kom38tQV69erdmWGoqIPPnkk5p79epVqeffvXu3Zrttv31tiojUrVtX88yZM12bPZoD6bN582bN4Rb89j29ffv2mvv375/+gUFEfOn2T3/6U83nn3++62dLEcN5tGXc9ugEVJ09esaWztsjFkREVq1apfnss8/WvGDBAtevTp06msNjG+ySgSlTppQ7BhF/rTRr1izXdvXVV5fzvwLWq6++qtmWnYr4ObHlpeFym3r16ml+9NFHXZstBWaJRfrY67jRo0e7tp49e2q+8MILU3q+1q1bu8effPKJ5s6dO1dihNWLbxYBAAAAABHcLAIAAAAAIrhZBAAAAABEZLTg2a5bs1uwi4h069ZNc1jPXRl2bdW6detcm60dZ1v39LFrmMIt2IuLizU3a9ZMc7httF3P9s0338Q9RKRg/PjxmsO1guF64FRs2LDBPZ49e7bm0tJSzU2bNnX9li9frvmEE06o8M9Fxe3du9c9fvzxxzWH687t+3b37t3TOzCISHQOVqxYodmupbLvsSIi69ev12zfY0X8cTj169ePY5g11qeffuoe27VK9uiZ8JrHzuubb76puUuXLq5fu3btNL/99tuuzT6/XY8V7s3QqlUrzXa/CJHo5zGi7PrfoqIi12aveW2/8HrI7s0RXpPGcT2MirFrSEUSr1MM93Cw6xIXLlyY8Plz4X2VvzoAAAAAQAQ3iwAAAACAiFjKUMOvXsvKyjTbEoewbNC2hVsAx/1V+9q1azXbkkcRX1oxfPjwWH9uTWf/Nux27W+88YbrZ8uQb775Zs133nmn62fLAQoLC2MbJ1JXUFCgecCAAa4t1WMR7HvEtGnTXNuYMWM02/eFl19+2fWj9LT62dJfEZFx48Yl7HvxxRdrfuKJJ9I2Jvwg/Ny86KKLNNtjFUJPP/205vAoBbtNPCpu06ZNmsOjR3bt2pXSczRo0EBzx44dNduSURGRHTt2aO7UqZNrs8dQ2bJW+14sIvLaa6+lNCb8uPC1ZH/vdj7mzZvn+tnXLcfV5I57773XPX7wwQc1h0fZ2KO/hg0blt6BxYBvFgEAAAAAEdwsAgAAAAAi0rIbqi13sWUxDRs2TMePS8msWbM0b9u2zbVdd911mm2JB6rupZde0vzWW29pDneX2rlzp2a7U1vI7hrVvHnzGEaIqpgwYYJ7bMuObf7ss89cv9GjR2ueMmWKa7PlGcuWLdMc7syH6rF//37Nl1xyiWuzJfy2PFnE72qLzEhWemo999xzmsOdySdOnBjrmPJdSUmJe2x3s7S7YYbsDrU33XSTaxsyZIjmo446SnO4O6ktdRsxYoRre/bZZzXbctU9e/a4fvbz96677nJt9joq1b+tmiycH/vastdD4e+Z3aNzhy0lnzp1qmsLS08te+JDy5Yt4x9YzPhmEQAAAAAQwc0iAAAAACCCm0UAAAAAQESl1yyGx2VYcR97URl2DZyIyMyZMzXb7YtFRH7+859rDo/wQMXs3bvXPb7qqqs027+Zk08+2fVLtE4xnCu7XiPcbvqDDz7Q3K5duxRHjKoIX+ulpaWaFy5cqPn3v/+962ePTgnXdSxYsEAz6xQzz67xDtdg2Lm74447XFsm16gjObteSsQfLTV06FDXxtq0H2c/p+zRPyJ+zW/Irt1//fXXNbdp06ZS47BrIt98803XtmHDBs32szj87LVHOvTr18+1JdtPAP/H/m7D60l7XJxdKxoeK5fs+hrZxa5Z/OKLL1L+d+E1UbbL/F0dAAAAACDrcLMIAAAAAIiodM1lWDqWDexX97aUTURk/fr1mlu3bu3a+vTpk9ZxJbJ79273+IgjjtCcq+Ueq1atco/t30mjRo00h2UX119/veZ169ZpDkvZbJnN1q1bXdt9992nedq0aZrt7xXpZef1lltu0bxp0ybXz87JpEmTXFvXrl3TNDqk6sCBA5rbt2+fsN8///lPzZdddllax4QfF5YJ21JEW078zDPPJHyOE0880T3Oxs/6bGPL71999VXXlqws0b5+Klt6atlS0//85z+uzZbK2jkNSx7tUo/w2BR7BNKwYcOqNtg8ZT/rysrKXJtdpvP1119rHjVqlOtnl+lMnz7dtRUVFWm2R3F06dKlkiNGRdl5PeWUU1L6N/ZoHBGRs846K9YxpRvfLAIAAAAAIrhZBAAAAABE5NXWnx9//LHmvn37JuwX7vZmd6hKt2uuuUbzmjVrXNt7771XbeNIl3D3UsuW1rZs2dK1vfTSS5rtDpjLly93/WzZRfizZs+eXW6++uqrXb+//e1vmrNh5958snTpUs2bN2/WHM7V6aefrvnaa6+NfRz259ly5aeeesr1Gz58eOw/Ox/Y96IdO3ZoDl8vtg3Z59NPP9VsSwptOaGILwsPS+IKCgrK/XeDBg1y/ewyg5os3P3UvmZatGjh2i644IIKP78tNbY7gIv4UvBkOzPa0lP7mSriS1ltFhF55513NA8ePFiz3UG1prNz/OCDD7q2e+65R7Mt9d+yZYvrd8kll2gOy8D/+te/am7btq1mOzciInXr1q3IsFEBxcXFmu2utsl07tw5XcOpFlwpAwAAAAAiuFkEAAAAAERwswgAAAAAiMj5NYu29v6Pf/xjwn52O/BwDVs6hdtSv/DCC5rDIzxs31zdrvycc85xj1esWKHZrlOsX79+wuew25AvW7bMtfXq1Svhv0v0+5s/f77rZ9ezsWYxXl999ZVmu0Y1/D23atVKcxxrhsNjG+yRAfY4j5/85CeuH2sWy/f888+X+987derkHl933XXVMRykKDxyqV+/fpo7dOigOVxD/MADD2gO537AgAGa7TqocP3vW2+9pdkev1AT2DWfdr2ZiF8/H64jtGsCTzjhBM3h539JSYlme50zd+5c1y88oigRe4RH+LPs+kP7WSzi36vt0Q+sWSxfeLyIXee5ceNGzUuWLHH9xo8fr9nuxSHiX7vNmzfXXKdOnaoNFgnZI9tERB599NGU/p19Tb/44ouxjqm6caUMAAAAAIjgZhEAAAAAEJHzZai2zNGWZ4RlbyeddJLmwsLC9A/s//Xv3z9h24wZM9zjXC09tcIyqI4dO1b4OWxJj922XcSXA4S/L9u3Xr16mv/whz+4frYEB/FatWqVZrs1eGjbtm2aw5K4VEuDH374Yc1FRUWubezYsZpt2fmll16a0nPXNLakTMSX2dj5GDNmTLWNCVVn5y7Ze/HUqVM1X3XVVa7t5Zdf1myPHQpLHu0xDl26dKn4YHNYstfIc889pzncZt8uj7GlnGFJYVlZmWZbGhouc0mVfW8O33/tc4bvxfZ94eijj67Uz67J7By3a9eu3Cwicu6552r+zW9+49rsEovFixdr/uijj1y/Nm3aVG2wUCtXrnSP33///ZT+3ejRo9MxnIzgm0UAAAAAQAQ3iwAAAACACG4WAQAAAAARObd4a/v27e5x9+7dNdttne16JhGRbt26ad6xY4dru+uuuzTbev2BAwe6flu2bNFstxAXEaldu7Zmuz7y7LPPdv2OPfZYzeE2/ogKf0f28dKlS12bXQ9i52PNmjVpGh3CreDnzJmj2a4pDdfg2KMzwudo1qyZZrtGNXyOoUOHpjTGcC0Houx7m4g/bmTWrFmaf/azn1XbmFB97Brv8Bga+5loj34K19+dfvrpaRpdbjn55JPdY7ueetKkSa7N/m7t7zM8ssL2q+w6RSvZ/gh2rVs43osvvrjKPxs/zs6BPR5DxK8jtetN4ziCCuX705/+5B4neg2G+6Fcf/31aRtTdeObRQAAAABABDeLAAAAAICInChDfeWVVzT37t3bte3bt0/zsGHDNIdHVjRs2FDzd99959p27dql2ZZc/eUvf3H97DbXF110kWuzZa629PT22293/Ti2oWrmzp2ruXHjxq7Nbi9ujwIIyxdRNWvXrtUcvg5sSaktdWrSpInrd9NNN2m2pdkh5i599u7dqzksPbRzZ0tUw6NxkH/CoxQmT56s2b7HXnPNNa6fPfIIP7BHerVo0cK1jRw5UrMtuQ/nIJFk5aSplquGZY72WAC7nAPVxx4tNX/+fNdm59VeAzFX8bLHZdjlNcnYo1FE8uM4vP/hm0UAAAAAQAQ3iwAAAACAiKytifzwww8133zzzZrD3YZsKcyYMWM0Jyv3DEuppkyZotmWOXbo0MH1s2WpdsdGxMuWCYe73z7++OOaDxw44NoS7RhnywlQOePGjdP82GOPaQ53MrXsDou//vWvXVvnzp1jHB0q491339W8adMm12Z3PRw8eHB1DQkZUlJSojncBXzJkiWamzZtqtmWpyIxW4pmd14XEenbt6/mW2+9VfOiRYtcP7sD5v79+zWH5f2bN29OaUz2vXnhwoWujXLGzLPXLOHu/fbvqUePHpqTLedAaux149SpUzXbpWohOx9jx45Nz8CyAN8sAgAAAAAiuFkEAAAAAERwswgAAAAAiKj1I9srp7b3chqcd955mt9++23N4dEZEyZM0BxHzfa6des0H3300a6tUaNGVX7+Cohzz92MzWNl2GMvzjrrLNe2YcMGzXarcRFfO27Xpb733nuuX7t27WIZZ4pych4//vhj97hjx46aS0tLE/47e7xMcXGx5nPPPTfG0WVETs5jMjfeeKPmp556yrXZ+V69enW1jaka5N08psoeM2U/U0X8muLPP//ctTVo0EDzG2+8oblNmzYxj7BC8m4e7T4NPXv2dG32/diuWUz1eAwRkYKCAs3Lli3T3L59+wqNM2ZZO4/Tp093j+1rxK4hjYNdPy7ir3/tEUci/qgTu96U12PVLV++XLM9Ai+ZGTNmaA73ZshBCeeRbxYBAAAAABHcLAIAAAAAIrLm6IzXXnvNPf7ss880223cR40a5frFvV1w27ZtY30+VNzdd9+tOSyHPHjwoObweBTbZh133HExji5/2VKYrl27uraysjLNtgTnV7/6les3fvx4zY0bN455hIhToteLiMiVV16p2R5lY0vERaq9NL/GsnMgIvL6669r3rhxo+bLL7/c9VuzZo3mf/zjH5rDsmP7+j7//PNdmz0yypbAIV4nnXSSZlsiLiJy3333aQ6XXyRSt25d99ge25Hh0tOsZX+3Q4YMcW1FRUWaw9fI7NmzNaf6uWevbVL9vBURefbZZzVnuPQ054VHYthj+pI58sgjNYfXQPmKbxYBAAAAABHcLAIAAAAAIrhZBAAAAABEZHTNol0zM2DAANf25ZdfarZHWJSUlLh+dlvhzp07xzxCZMJRRx2lOdm6qrCW367rOXDggOZ58+a5fn369KnqEPNC+Lu1x1vYNRMi/lgSe5zJI4884vqxhi132ONlwtdSnTp1NM+ZM0fz7bff7vr16NFD8+DBg13baaedFscwIX6uRPxxQMOHD9ds501EZPfu3Zrt6z08cuEXv/iF5ocffti1sU6xetjXoF0fJyLywgsvaF66dKnmcB7t0UWDBg1ybfbvBOWrXbu25i5durg2ex3xr3/9y7W1bNlSs10PfMEFF7h+dm3j7373O83JrnPCIxw6deqUsC8qZuTIke7xypUry+1n/y5ERK644grN9toon/HNIgAAAAAggptFAAAAAEBErbCMIZC0sapsqVt4vIEdl92mtlu3bq6fLZmxx2iExyrkoDi/207rPMattLRUc7iltN0KvmHDhq7Nli7b0oCxY8e6fkOHDo1lnCnKqnm0pbojRoxwbQ899FDCfzdw4EDNEydO1FxQUFDVIeWKrJrHOHz++eeaW7Ro4drCoxoSsSWKn3zyiWsLS3eyRF7Moz0uw273vmjRItfPlqVedtll5f4bEZFzzjlHc3jkQpbKi3lMlb1WsstymjRp4vrZ4xjC0vIslbXzuG/fPve4V69emsMyVFtGat/3wutrO4/2GiXsd+aZZ2petmyZa8vSa9usnceQLeE/44wzEvY7/vjjNS9cuNC1tW7dOvZxZYmE85gT7yYAAAAAgOrFzSIAAAAAICKjZahIKme+1k+nrVu3useLFy/WXFxc7NpefPFFzXZH1XAHXduWDlOmTNFcVFSUVfNoS2uefPJJ19azZ0/Ndnc3iEievx7DUie725stnQrL3lavXq25sLAwTaOLVV7PY7irYo6UIlZGXs9jDZIz82h3Fv73v//t2vr37695/fr1Pwwo+fW1Ct9X7Y63p5xySkWGmSlZO49hOXH37t01r1ixwrU1btxY8wcffKA53deMWYQyVAAAAABA6rhZBAAAAABEcLMIAAAAAIhgzWL2ytoa8Eyyf6/h3+727ds116tXT3O6t4LfuXOne9y7d2/NCxYsYB7zA/OYH5jH/MA85ij7uV3Lnh8Rw1PH+FyVZo+ZeuWVV1zbt99+q7lp06aaJ0yY4PpdeumlmuP9FaVN1s7jnj173OMadNxXZbBmEQAAAACQOm4WAQAAAAARh2V6AEBF2JKMsDwj3H66utitsgEAQPlypKyy0qZNm5bpIcCg7DQefLMIAAAAAIjgZhEAAAAAEMHNIgAAAAAggjWLQBUtWrTIPW7UqFFmBgIAaXTw4EHN4dFFhx56aHUPBzkoODojgyMBkCq+WQQAAAAARHCzCAAAAACIqBWWkgAAAAAAwDeLAAAAAIAIbhYBAAAAABHcLAIAAAAAIrhZBAAAAABEcLMIAAAAAIjgZhEAAAAAEPFf4oCfx6qiN2EAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 138.58it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 98.55it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 9 | disc_loss: 1.2474972009658813 | gen_loss: 3.8837714195251465\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 138.98it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 93.67it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 10 | disc_loss: 0.7508004307746887 | gen_loss: 2.011147975921631\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 139.56it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 98.32it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 11 | disc_loss: 0.7344393134117126 | gen_loss: 1.9667150974273682\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 133.98it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 94.13it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 12 | disc_loss: 0.7232823371887207 | gen_loss: 2.216909408569336\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAABtCAYAAAAI5vRhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXV0lEQVR4nO3df1BU1f/H8WMlpoGpiRphmZbiWPZba8ysxtTUsN8/dMwZM6Msq8kxncpKbSqaotEsrRjLyB9l01RThKiZloGlWOaIheaP1DBNAyEUk88f3/m+e59z2XWBvbDsPh9/vW7nsJy83N29c9/nnCZVVVUGAAAAAADthIYeAAAAAAAg8nCzCAAAAADw4GYRAAAAAODBzSIAAAAAwIObRQAAAACABzeLAAAAAACPk47Tzr4aDadJGF+L89hwOI/RgfMYHTiP0YHzGB04j9GB8xgdAp5HniwCAAAAADy4WQQAAAAAeByvDBUAAABRYsuWLZK7dOnSgCMB0BjwZBEAAAAA4MHNIgAAAADAg5tFAAAAAIAHcxYBAACiyMqVK63j/v37S46Li5N86NChehsTgMaJJ4sAAAAAAA9uFgEAAAAAHpShAgAANHK6pPTxxx+32o4ePSo5KSlJclVVldWvSZMmPo0OQGPFk0UAAAAAgAc3iwAAAAAAD24WAQAAAAAezFlEo7VgwQLr+J577pH88ccfSx44cGC9jQmIVRUVFdbxyy+/LHnGjBmSy8vLrX4ffvih5EGDBvk0OiD67d+/X3J+fr7VdsIJ/z0bWLJkiWTmKEaedevWSV6xYoXVpuei/vvvv5Jbtmxp9Rs/frzkqVOnhnmEiDU8WQQAAAAAeHCzCAAAAADwoAwVjcrff/8t2V0a/J9//pG8evVqyZShNi66tCY3N1dycnKy1e+8886rtzHh+Hbv3m0dT58+XXJlZaXknj17Wv3cYwC1895770l2y0uHDBkiuXXr1vU2Jhxfdna2dXz77bdL1tuhBFNSUmIdP//885J1SaoxxrRt27amQ0SM48kiAAAAAMCDm0UAAAAAgEfMlKEeOXJE8s6dO6229PR0yZ999pnk0tJSq58uc7zsssustkWLFkk+88wz6zZYBKTLKdzzqK1Zs6Y+hhPzdMmoMcb8/PPPku+8807Jmzdvtvq1atVKsi4tNsZetU+/fkpKitXv22+/lUxZVcPQ75169VOXPqfPPfec1ZaUlBT+gTUSunR32bJlVpv+HLnqqqusNlawRHUyMzMlHzt2zGqbOHGi5MTExHobE/7zxx9/SL7uuuskb9q0yerXtGlTyWPGjLHaZs6cKfnLL7+UnJOTY/V76623Ar5+3759azLsqFVYWGgd6+/4+v3X/T45btw4yfo+Qa9GbIwx7du3l/zFF19YbRdddFEtRtxweLIIAAAAAPDgZhEAAAAA4MHNIgAAAADAo9HNWTx69Kh1fODAAclFRUWSX3jhBaufnotYVVUV0u868cQTrWNdR56fn2+16frwadOmhfT6OL59+/ZZx27dt6bn8XTu3Nm3McW6jRs3Su7Xr5/V5tbsB6KvW5c71+b//frrr9axXibeXRoc/tBzOoyx50i5515fjwkJCZJjfcsTPX9+xIgRkvPy8qx+ersRl56je8opp0g+99xzrX56Ln2bNm1qPlifude6/htavny51bZ161bJkydP9ndgjYT7PupuX6PNmzdPcp8+fXwbE/6zbds26zg1NVWyPlfunHv9ffXyyy8P+Po33HCDZHfOor629Lk3JrbnLOrv/+72axs2bJC8Y8cOyfrzyxjvNiXVvbYx9hzVSy+91GrT53jAgAGSTzopMm/LeLIIAAAAAPDgZhEAAAAA4BGZzzsdetlfdwlxXbaiHwG7S4vrssTc3FyrLTk5WbJ+BOy+xqeffir5xhtvtNoWLFggmTLU8NFL7htjzF9//RWwrz7/AwcO9G1Mseijjz6SfOutt0p2rxFdrvHiiy9KHjx4sNVv5cqVkgsKCqy2/v37S/7hhx8kL1682Or32GOPSR40aJDV1rVr12r+L1AbZWVlkp988kmrTZcGuyU4+r101qxZkjt27BjuIUac8vJyyW+88YbV9ttvv0letWqVZHcbGn1tuf+2ujxfZ106ZYwxbdu2lay3q2nevLnVT19LevsbY4x54IEHJOtz+u6771r9vvvuO8m///671ab/hvT/i7s91cknnyzZ/Yx9//33DWz678wYu8TZpd+PUT/cMke9hdTQoUMlz5kzx+qnr9tg9FSp+Pj4gP0CTe2IRXqLJ/2dPpiDBw8GbAu2jZFuc8/BkCFDJGdlZUnWUxMiCU8WAQAAAAAe3CwCAAAAADy4WQQAAAAAeETsnEU9l+Haa6+V7M5Z00v333fffZJvueUWq1+wuYih2rVrl2R3Dsmjjz5aq9dEcO6clmC19/q8XnTRRb6NKRboOUbGGHPXXXdV269FixbWsb5G3OWmtZEjR1abXddff71kd7l3PU/x+eeft9rmzp0b8DVRM1999ZXk+fPnW23BtiHSW2Tcdttt4R9YBNPXhZ4PaIwxM2bMkHzzzTdLdrclad++vWR3fqC7hVQg+vzobRbcLRfcMWp+XkvuXOM333xTcizMba0rPU/U5c73b9asmd/DgbHnHmdnZ1tt+n1h9uzZkkOdoxiM+16st3rr0aNHnV8/Wuh5o+72ePrc6e+T7tYmeu6+/o6itzEyxt7a5KeffrLa9PkaPXq0ZD2X0Rh7rnlD4skiAAAAAMCDm0UAAAAAgEfElqHqss69e/dKdpf17t69u29jWLt2rXU8btw4yW6JR69evXwbRyxbunRpyH3PPvtsyYmJiX4MJ2akpaVZx5WVlZJ1eYbe2sKY4KWntaGXgndLy3Up3vLly8P6e2NdXl6e5DvuuEOyu1R/MLoUXE8DiHXjx4+vNgfz+uuvW8e6THzhwoWSKyoqrH56mkZmZqZkdzqH3sJDl5KHiz7/y5Ytk+xuhYXj09vV3HnnnVabfm/u0qWL1UYZav3QpYzu9ajLEsP9HcUtgdSf2Xv27Anr72rM9HcKd0qaLvl87rnnJOsyUWPsLX6C0SX8l112mdWm/070mNwpApShAgAAAAAiFjeLAAAAAACPiKkNcleC27Bhg+SUlBTJutTQD7o8Z8CAAVabXr1o2LBhVhurb/qjqKgo5L7XXHON5FDLBPAfXTKzZMkSqy3QymB+X4+67LGkpCRgv/j4eOtYX6u1Xf04lvz999/W8UMPPSRZ/10E+7d0V5bTq1OjbuLi4gIe33///SG9xsUXXxyw7Y8//pDsli/qa1Cff/fanzRpkmR39WT3+kTNHD58WLIuZ9OlbMbY12Dv3r2tNt4H64f+Luv+m7urh4eTXl3VGPszsFOnTr793sbmmWeekexOo9HTyfTnl/vZFiq9orU7dU1fu/r7qv6ZSMKTRQAAAACABzeLAAAAAAAPbhYBAAAAAB4RM2fRtXnzZsl6ewy9HLAxtZub5s6PfOmllyRPnTpVsjsfICsrS7I7J8OtR0Z4rFixImCbOx+AOVJ1o/+G3eWbtdLSUsnuXLd27drV+Pe62zFkZGRInjJlimQ9B8MYe97WmjVrrDbm59RMjx49rONQt0/QWyK475d6yyNEFr31hjH2/Db3etTXkl5OfvLkyT6NDq6dO3dK1ufOnUul3yPdOaW8J9YP/dnpvieuX79esv4u27Rp01r9Lr11yp9//mm16a00xo4dW6vXj0b6upg/f77VFu4tnvSaG3qrr2D0NhrG+DvPtSa4wwEAAAAAeHCzCAAAAADwiJgyVPcRrX4sv3btWsnff/+91a9v376SdQmGWx6ntwJwSxszMzMl61K8uXPnWv1SU1Or7YfwmjhxouTCwsKA/RITE61jXa6MmtPXjy7HNsaYp59+WrIukzjrrLOsfnpZ96VLl1b72sYY89FHH0l++OGHrTa9fc2xY8cku9sHfPDBB5J1yQ1Co8ul9uzZE7Cffq/T58MYb5mVpkufdu/eLZlyuIahy0tvuukmq02XObratGkjecKECeEfGI7r0KFDkvV7abDrb/v27b6OCdXTn1PudxS9Rc22bdsku99/W7ZsKVlPfzLGmBdeeEGynhLivq8+/vjjksNdXhktLrjggoBt+v2yWbNmVluoW2nk5OSE1E+/vvu7IgV3PAAAAAAAD24WAQAAAAAeEfNsOiEhwTqePXu25DvuuEPygAEDrH6BSqTcsjfdz33kr8sGPvnkE8mDBg0Kaeyou5KSEslvv/225IMHD1r9dKnFpEmTrLb4+Hh/BhcjdPnDAw88YLUNHz5c8u233y65oKDA6rdq1SrJeqVi93rU3PIZ/XMVFRWS9SqpxhgzbNiwgK+J42vdurVkt6xel9no0uKkpCSrn54W4Ja9FRcXS05PT5esy6NQf1555RXJubm5Afu5KzPu2LEjYBvqh76W9LUarAzVXVUR9a9r167W8bfffitZr0Dtlvfrz0u3TZ9/3c9d0TotLU0ypf81t3XrVskjR4602rKzsyV36NBBsv4ea4wxM2fOlBzsO5DeoSFS32N5sggAAAAA8OBmEQAAAADgwc0iAAAAAMAjYuYsuoYMGSL5119/lewudVtWViZZ13K7db+HDx+W7C4jnJ+fL/nCCy+s3YBRI3v37rWOn3nmGcl6OWjXaaedJnno0KFhHxf+j1662z3Oy8uTrK9NY+ztEvR15S41recJu3Mt1q9fL1kv23/XXXeFMnTUgp6rbYy99ZDeZsF9X9VbYpx//vkBX2PRokWSmbNYf4qKiiQ/++yzAfvpOU2jRo2y2lq0aBH+gaFGmjdvLtmdw6bp67N3796+jgnV01tibNiwwWoLddsT3U/P4TfGPv/6fL/55ptWP3fbDtSMnvP7yy+/WG36u8jVV18t+ZtvvrH6Bfsuq+n3WL11mDHGtGvXLqTX8BtPFgEAAAAAHtwsAgAAAAA8IrYMVT96P/vssyXv3LnT6qeXa9elVNOmTQv42m7JlVs+Bf/99ttv1rEuodBlFu6Sz7o8uUuXLj6NDqE699xzrePp06dL1uWGujTHGGMuueQSyZ9//rnVprfw+PLLLyXrrR4QXoMHD67Vz+ntanSJuDF2Gao+/3pKgDH2+UbdlJeXW8fdunWTHKx8UZ+DKVOmhH9gqBNd+h+sfFGX948ePdrXMaF6Tz31lORDhw5ZbXqqlJ7acdVVV1n9Tj31VMlZWVlWm76O9fv2FVdcUcsRozozZsyQrLe2MMaYr7/+WvKKFSsk12SLEn2t6vOoS84jCU8WAQAAAAAe3CwCAAAAADy4WQQAAAAAeETsnMVAEhISrGO9DcZrr70mubKy0urXtm1bye72GO6y/vDfrFmzrGO9VLTWqlUr61gvWazr/9Ew3HlQ+lrq1KmT5GuuucbqN3v27ICv+fTTT0u+9NJL6zhC+CnQdevScxvd+copKSlhHVMsc+c3hXp+xo0bJ7ljx45hHRPqrqKiIqR+vXr1kuxufwT/bNmyRbLeMuqMM86w+mVnZ0s+88wzJbtbEs2ZM0ey3nbIlZ6eXvPBIiA9H1jPHXTXS9BzGPU9iJ6HaIy9DYb7XqzniY8YMUKye48TKfi2DQAAAADw4GYRAAAAAODR6MpQX375ZetYl57qR77uY3295YbelgP158iRI5L10sPG2I/odXmp+/i/X79+Po0OtfHzzz9bx3rZ8JkzZ0p2l4NevHixZHe5//vuuy+cQ4SP9JYYehsjY+zrWJcnn3XWWb6PK5boLUrcbS8ClaG6n4EPP/xw+AeGsFm1alVI/VJTU30eCaqzbt06yfp7zrJly6x+nTt3rvbn9TVsjDEZGRmS3RJkXTLubl2Futm3b5/kwsJCyYMGDbL6vfrqq5L1d5ukpCSrX7BpAPozUW8PGKl4sggAAAAA8OBmEQAAAADg0ejKUPWqesYY8/vvv0vWZU9jx461+lF62vA2bdok2X08r8+dbrv11lutfnoFKTQ8ff0ZY58fXZaYmJho9SsuLpbcv39/q+2UU04J5xDhoyeeeEKyXknOGLs855133qn2v6Pu8vLyJO/duzdgP132dOWVV1ptrIAaWcrKyqzjgoKCavu5K7nrlRlRfxYuXChZn4OSkpKAP6O/57jl47q8X6/kb4wxkyZNqu0wcRy6hHjgwIGSb7jhBquf/j5z+PBhye79SWlpacDf1aFDB8ndu3ev+WDrGU8WAQAAAAAe3CwCAAAAADy4WQQAAAAAeDSKAnddR6yXDTbGrvvW2yy8+OKL/g8MNaK3NtFLFBtjn8czzjhD8uTJk61+TZo08Wl0CFVubq7kOXPmWG2tWrWSPH/+fMnffPON1a9NmzaS586da7Ux76bx+PHHHwO2JScnS3bnyCF8Vq9eLTnYUu16Tml+fr6vY0LdrFy50jrWn52a+3k4atQo38aEwPR3VJ3ff/99q1+nTp0k9+zZU/KePXusfvpzdMuWLVZby5Yt6zJUBKHnIoY6NzQzM1Pyn3/+abXptThcje0zkSeLAAAAAAAPbhYBAAAAAB4RW++ly2l27dpV7X83xi7DWL58uWSW348MlZWVkouKiiTr5YaNsc/rQw89JFmXY6Dh7N+/X3J6errktLQ0q9/ixYslf/HFF5ITEhKsfrosVZekonEJtjT88OHDJVM+7p9hw4ZJnj59utV27Nixan+mvLzcOt68ebPkbt26hXF0qI2cnBzrWF8/+rOya9euVr+4uDh/B4ZqtW/fXrK+5mbNmmX109M29HSLjIwMq59+76TstP78888/koNtt6e3DNPlqu77rT52p9eMHj261uNsCDxZBAAAAAB4cLMIAAAAAPDgZhEAAAAA4BGxcxbnzZsn+d577w3Y7/TTT5fcvXt3X8eEmtu4caPkRx55RLI79/TUU0+VrOcsIjIsXLhQckFBgeQnn3zS6qeX+dbzbNw5GR07dgz3ENEAgs1FHDFihORgS4ijbi6++GLJeml+Y4zZunVrtT+jt9Ewxpji4mLJzFlseO75CTT3VM+VM8aYZs2a+TYmBDZ27FjJixYtknz33Xdb/fT50tuCNW3a1MfRIVQLFiyQrLeF+v77761+hYWFkvX6G+51qj/3HnzwQavtiiuuqNtg6xmf4AAAAAAAD24WAQAAAAAeEVuGmpeXJ1lvv9C8eXOr39tvvy2ZR/mRRy8VrZclPvHEE61+Y8aMkRxsyWI0jKysLMmlpaWSjx49avXTZRj9+vWT3Lt3bx9Hh/qyY8cO61iX4LjX9Oeffy5Zl6DDP48++qh1rJd119tl6NJVY4zp27evvwNDjVx33XXWsd6CQV9n+vsPGk6vXr0k6+2E2DIosm3fvt061tfZvn37JLvl3UeOHJHcunVryQcOHLD63XPPPZKnTZtWt8E2MJ4sAgAAAAA8uFkEAAAAAHg0aBnqZ599Jvn111+32nJyciTrsot169ZZ/VJSUnwaHcJBlyzqFU9fe+01q59eORENT6/UZoz3ugukXbt2ksePHy+Z6zQ6LFmyxDrWqza6K5726dOnXsaE/7gr7rnHaBxSU1Ot4927d0vu0KFDfQ8HNUDpaePhTmuLi4uTrMtQA61GbIwx+/fvl+ye+6lTp0qOj4+v9TgjAU8WAQAAAAAe3CwCAAAAADy4WQQAAAAAeNTrnMWysjLrOC0tTXJxcbHVlpycLPmTTz6R3KlTJ38GB1/oLRcQ2fTS+m4t/4QJEyQPHTpUcrAtMdw5bGic9NZFJ51kf2Toech6vocxxpxzzjn+DgyIEcxTBMJPr7FgjDEZGRmS582bJ3np0qVWv127dlX7es8++2zQ12/M+DYHAAAAAPDgZhEAAAAA4NGkqqoqWHvQxrrKz8+XPHLkSKtNb6vRrVs3P4cRqcK5/rKv5xFBcR6jA+cxOnAeowPnMTpwHqNDzJ5HvX2U3uavkQp4HnmyCAAAAADw4GYRAAAAAODBzSIAAAAAwKNB5ywiqJitAY8ynMfowHmMDpzH6MB5rCE9t0pva9SkSTj/KWuM8xgdOI/RgTmLAAAAAIDQcbMIAAAAAPA4XhkqAAAAACAG8WQRAAAAAODBzSIAAAAAwIObRQAAAACABzeLAAAAAAAPbhYBAAAAAB7cLAIAAAAAPP4HRE8ajZaJi/kAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:07<00:00, 133.21it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 94.58it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 13 | disc_loss: 0.9191166758537292 | gen_loss: 3.067324638366699\n"
     ]
    },
    {
     "data": {
      "image/png": "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11xzjWnr0KGDZH87lEaNGkkuW7Zsgc8jHn5ZBAAAAAAEcLMIAAAAAAhIudVQ4+nXr59kvUqfL5f/5uIiZVaX0ity7dq1y7Qdd9xxki+99FLJL730kumny2n8EmKtRInY/yyxxtVf8XTjxo2SjzrqqJjPlyTFdhznzJljjtu0aSP5+uuvN20TJ05M5ku7RYsWST733HNNmy7r0OUe+u+sCBTbcUyGPn36mGO9AuqqVaskN2zYsNDOKSSRHsd4dMnV6aefbtp++uknyf41tlmzZpL1NUOXpxaBtBrHadOmSdZldLt37zb99DXSLzXW03SKkZQZRz11xv881P+21113neRatWrl67X0ip1vvfWWaStVqpTk+fPnS9bv0yKQMuOov19cffXVpk2/fxL9zqO/X8b77up/D9W7CDz00EOSMzMzE3rdkLAaKgAAAAAgcdwsAgAAAAACuFkEAAAAAASk3NYZ8QwePFhyvDmLf/75pznWWzogdx9//LE51vMm/PkuTZs2layX4/fnF8ar9db043Ttvn/cs2dPyXfffbfpVwjzFFOCvw2NruWfMmWKaevbt6/kc845p8CvPX369Bxf1znnMjIyJP/yyy+STz311AK/Lg775JNPJPvzM/S1NJ22k4myN954Q/KaNWtMW7x5/HoLhiKep5g2/O2oevToIXnfvn2S/Wv4zJkzJRfTOYop68QTT5Q8YcIE06bn1g8ZMkTy8ccfb/rp7x56PYd3333X9NNj7H+n0p/FRTxPMSXp98zOnTtN27fffivZ31pMO/nkkyXH++6qv5Pq669zznXp0iXXcy1O+GURAAAAABDAzSIAAAAAICBSZai//vqrZP+ne11m0717d9M2e/bscE8sYlasWBGzzS+LWbx4sWS9PYbOzsXfEkOrW7eu5Ndff9206WX9q1WrltDzpbPzzz/fHB9zzDGSs7KyTFunTp0k6yXE9+zZY/rpMhtdsnbmmWeafno7Br8ETpf7UHqaXLpkRpcC+3Spcbly5cI8JYRo3Lhxku+55x7J2dnZCT9H8+bNk3pOyJ2/XYLe9kS77LLLzLF/nUXy6K0PevfubdpGjRolWU+r8Mu99fFXX30l2f8M1J+d48ePN23+ayP//CkWempGxYoVJfulprFKT6tWrWqOr7zySsmpVnbq45dFAAAAAEAAN4sAAAAAgABuFgEAAAAAASXiLZntnIvbWJwdccQR5lgvbVyzZk3T9vvvvxfGKeVVYpP4EpPUcdRbZTjnXKNGjSTrrQ6cs7X4OvtzG/V8gJtvvlnyoEGDTD89ry5F5lIV23H0rV+/XvIll1xi2mLNU423/UaiqlSpYo7XrVsn2X8fF6GUGcd4fvrpJ8mNGzeWrN/Dzjn3xRdfSC5fvnz4J1Z4IjGOsfjX5vPOO0/y8uXLJfuf+3rOuP/5uHDhQsl6uf8iFrlxnDdvnuRWrVqZNj3HVH/uffnll6bfGWecEdLZhSYlx3Hr1q3mWH8v2b9/f56fz/8cHT16tOSBAwfm+fmKQEqOY8uWLc2x/tzT10h/TQ19rLfeGz58uOnXp0+fpJxnIYo5jvyyCAAAAAAI4GYRAAAAABAQqa0ztLJly8Zs85cN37dvX0KPw78qVKhgjvUWFk899ZRpK1WqlOQNGzZIrlOnjumnt3G4/vrrJadIqWkk6G1J5s6da9qWLVsm+fLLL5e8bdu2mM+nSzX8ctJXX31VcuvWrU0bYx4evST/gQMHJPtjELHS07S1a9cuyblMORF+KVUxKj2NtLFjx0r2l+bX0zT01IwULDuNBH9rrqlTp0q+9tprJftbhGm69LRr166mrX///gU9RSTgtttuM8e6VF9/f/G/k3To0EHy0KFDJevt26KGXxYBAAAAAAHcLAIAAAAAAiK7Guo555xjjvWKbv7KU2PGjJFcjH7+T8nVpRDAOEZDJMZRr57YsWNHyR9//LHpd/bZZxfaORWySIxjop5++mnJM2bMkDx//nzTr169epKXLFli2jIyMkI6uwKJxDhu375dcpMmTSTrKRvOOVejRg3Jq1atklyMVovOr0iMo/bRRx9JnjJlimnT5cW6BNIvX6xYsWJIZxeayI1jmmI1VAAAAABA4rhZBAAAAAAEcLMIAAAAAAiI1NYZhw4dktygQQPTtmjRIsn+9hiZmZmS9RxOvXQuAKS68847T/KNN94oOcJzFNPagAEDcswoHvScQ71Fye7du02/N998M8fHoPi54IILcsxAKuOXRQAAAABAADeLAAAAAICAyG6dMXPmTHPcq1cvydnZ2aZt586dkotR6SlLEUcD4xgNjGM0MI7RwDhGA+MYDYxjNLB1BgAAAAAgcdwsAgAAAAACuFkEAAAAAAREds6ib+3atZLr1atXhGeSMGrAo4FxjAbGMRoYx2hgHKOBcYwGxjEamLMIAAAAAEgcN4sAAAAAgIDcylABAAAAAGmIXxYBAAAAAAHcLAIAAAAAArhZBAAAAAAEcLMIAAAAAAjgZhEAAAAAEMDNIgAAAAAg4P9VDF4sHj/jcQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 137.16it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 96.54it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 14 | disc_loss: 1.0174776315689087 | gen_loss: 3.5152368545532227\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 135.72it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 96.60it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 15 | disc_loss: 0.8949613571166992 | gen_loss: 3.006606340408325\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 937/937 [00:06<00:00, 136.36it/s]\n",
      "100%|██████████| 156/156 [00:01<00:00, 95.97it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 16 | disc_loss: 0.733514666557312 | gen_loss: 2.2252442836761475\n"
     ]
    },
    {
     "data": {
      "image/png": "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2fL06dO9flqLnuqxdGvrDh06xPY7hLycx3D75gEDBlieNWuW5XBd7+9//3vLzZs3txwenaA1+jpXzjnXvXt3y7rdf5aPX8jLeUzam2++6V3rcy48oqZjx46WdU1Olo+kyZt51LVvH374odf2wgsvWH7wwQcth89bfU/U97nw/fGKK66w3LNnT68tPF4orl+q4zf0fVrfR3v06HHQ352GnJpHXTt4++23e21z5syxHK510/dBXUcaHoOgf09dlxi+L+na8vDYBl0TedJJJ1kOP+c8/PDDluvXr++1LV++3HJCRxnl1DymK/zcoOtDdV2q/s2d8z+/JEFfF8J9NHr16mV50qRJXltRUVGi43B5NI+698Gnn37qtennkjVr1ljWNampnHHGGd61Pl/Ce6245/S3vvUtr9/atWvTeuyEsGYRAAAAAJA+bhYBAAAAABE1D92laoRb+6bazllpOYB+ldu6dWuv3/z58y2HW4MrLScYO3as19a2bVvL4Va6N910k2U9fmHEiBGxj1WdXXzxxd61liHHHb/gnHMjR460rMerOOeXEDz55JOWy8rKvH47duw46GM555f/6NEZulWyc841atTIFbLwOaLb7mtJqpYzORctW0pHuG24mjFjhmXdMh7Z0bhxY+86LD1V+nqZ5dLTvHTOOedYDo8T0ve6VOWlukW+bq1/+eWXe/20ND+V119/3bKWiDvnH/dwyimneG1arq7H4RQKfe8JS9sWL15sOXy/0fe3E044wXK/fv28fuedd55l3Ur/6KOPTnuMWkqn5cnha329evUsh6XGCZWe5iWduzfeeMNr08+rWuaYdNlpSEvQw9JYLUPOQNlp3tDPgs45t3nz5ti+ekzJzJkzLQ8ePDitx9Ijbpzz/y2EpeVK/23pa0kuqb7PfAAAAABALG4WAQAAAAAROVOG+vnnn6fVL9xNTMs4tORTd2WsqC1btnjX69atsxx+pazj0JKhcJfX6lwOMHXqVMtLly712vRreC2x+uY3v+n103KAffv2eW0LFiywPHfuXMtaHuWcP3e6i51zfkmOlrxWpLyyUOkulxWlZVC666Nz/vyHzx9UPd2xUUvgQmEpY1jChtRSlfSG9P3mkksusfzTn/7U69e1a1fLFS2J27lz50F///bt271+3bp1s/zUU095bbobaqGXJLdo0cK71p3ddadM55y76qqrLA8dOtRypssXp0yZYjncDVV3GR82bFhGx5FP9H0pLKXWNv2MEn6+SKLEUD8r/fOf/7QcLtnRXTXD8mcdbyHS/96NGzfGtoX088aYMWMsh+9t3/nOdyxv2rTJ8kMPPeT1S1V6Guf73/9+uX+mKvDNIgAAAAAggptFAAAAAEAEN4sAAAAAgIicWbMYbrWttL5atwJ3zj8S48wzz6zQY+vaN11vGK65WbJkieVw3cUrr7xiuUOHDhUaRyHSv+fEiRMth0ej6Bxrfbj+jHPOrV+/3nK4JfLo0aMt69rWcGtw3ca9TZs2Xpsel6JbiOuaG1TesmXLLD/zzDNemz639PgFZIceNZNqDWnnzp296+7du2dsTIVIX2+cc+6vf/2r5TfffNNru/rqqy23bNky0XGERw3179/f8po1ayyHr4l6vE6m19zlsj59+njXuqYpXIN/xRVXWM7030yPDPjzn/9sOfwso0d/NWjQIKNjylfNmjXzrvVIEf3b6vEVziWzZnHlypWW9fkYfqbSNdCFvkYxpP+9l112mdem9wy65tM5f42h/v0GDRoU+1h6fE26e6+Ezj33XMu33HJLhX5HpvHNIgAAAAAggptFAAAAAEBEztTWhdtw6/a2WpY4ZMgQr19FS0/VH/7wB8v33nuvZd0y3Dn/a37dOtc551q3bl3pcRQiLfFNtY1wXKnxDTfc4PXbtWuX5XB+tBSkVq1alo877jiv36RJkyy3a9cudkxITrhd9S9/+UvLu3fv9tr0OX3ppZdmdmA4KN3y/YILLojtp6VzTz/9dEbHVN306NHjoDnTPvzwQ+965syZlvUIoeuuu87r17hx48wOLE+E7zd/+ctfLIfvWeFxB5k0efJky3qc1N133+31O+uss6pqSHnr9NNP9671SJTVq1dbDo/OSIKWoepn0m984xtePz06ozoLn4+6fKlv375e24wZMyyHZb1KP19q6WmqYzlCujxKn4NNmjRJ+3dUJb5ZBAAAAABEcLMIAAAAAIjImTLUJ554IrZNSxQHDx5c6cdau3atd33XXXdZTrXbn5bDhrsoaRsO0NKIRo0aWdZdvJzzS1S1REZ3P3XOudLSUsvhLm5169a1rLsFjhw5MrYfqsb48eO960WLFlkOd2rTcimeV9mxZcsWy1qWGM7Vtddea7moqCjj40JmvPbaa5bDXcC1tEqXFWgpOdKj721VbcWKFZZLSkosn3rqqdkYTl7THTCd85dL6PvXL37xC6/fo48+Wu7Hev/9973r66+/3vKePXss6zKc8OfCXXir8+7u+neaOnWq16bvYVOmTLEclqTq372idCfk0047rdK/L9P4ZhEAAAAAEMHNIgAAAAAggptFAAAAAEBEzhQu//vf/45tGz58uOVwzUxF3Hzzzd513DpF3SbcOX+tY1izjoPT+nCt8051jMa6dess79+/32s7+eSTLT/00ENem9blN2vWrPyDRaL0SJpRo0bF9hs0aJB33aZNm0wNCTFuvfVW7/rOO+88aL9zzjnHu77yyiszNiZUnT/96U+Wd+zY4bXpNvG6xifV1vLIPbolv65DnTdvntePNYyHFu6XoGu39WiLTz75xOv3yCOPWG7btq3l8EiVadOmWQ73x/jPf/5jWY8u0j0hnPP3hejSpUvs+JP4TJ2vwj0RdB22HgUU7rlQVlZmWT/Lpjo6Izxu5YEHHijfYLOMbxYBAAAAABHcLAIAAAAAInKmDLVbt27etW4xXJHt88PyxQEDBliePXu216Zfw+vX89OnT/f6UXpaflriG5Y3KS1p0q/4O3Xq5PV7+umnLeuxHMgN9913n+U//vGPlsNtvbt372556NChXtvhhx+eodEhzty5c71rLRnX18dwrs4+++zMDgwZ8bOf/cy7fu655yyH77cLFy603Lp168wOrJrR8rYhQ4Zk9LFOOeUUy/r83rRpU0YftzrQv+2ECRMsh6XaWhqqr6XFxcVePz26KDymQY/+uu666yyPGDHC63fUUUelNXYcoEtgNA8bNszrN2vWLMv9+vWzHC6v0vfOxx9/PLFxZgPfLAIAAAAAIrhZBAAAAABEcLMIAAAAAIjImTWL27Zti23r3LlzuX9fuN5wypQpaf3cRRddZDlcL4fy0/Vn7dq1s6zbSzvnr2nTuu+wDp91itmn24EPHDjQa9M1pbqNdJ8+fbx+kydPtlxUVJT0EJGGcePGWV6+fHlsP50f1ijml+3bt1vu3bu35eeff97rp+vx33vvPa9NjyRC5SxYsMC71uOFOnToYDk86iAJepxUnTp1LD/xxBNev9GjR1vmtTk9Rx55pOXwiASla34vueQSy+Gafj2SSN9TnfP3gdB/T3fccUc5RozyCPdA+eCDDyynOgZOj5pq2rRp4uOqSnyzCAAAAACI4GYRAAAAABCRM2WoN9xwg3etX/tWZGvnMWPGpN1XtxjW7f45KqPytIxFSzCmTZvm9dOSxQYNGlg+99xzMzg6xNm3b593/e6771rWYy+2bt3q9dOtorUEedSoUV4/ypuyo6SkxPKSJUssl5aWxv5Mo0aNLFMGntvmz5/vXd9yyy2Wly5darlevXpev1dffdUyZaeZo8855/ySwldeecVyJspQtQxOS+e0VNk5f5lB8+bNEx8H/p8e0xY6//zzLT/55JNem743t2jRwvLevXu9fhxBlZz27dt716tWrbIcd/Sec/59SK1atTI0uqrBN4sAAAAAgAhuFgEAAAAAETlThhqWN+kuYRURllboblPh18HXXHONZS2VRLK0nE2/unfOL0PVndrCcshUpRuonF27dlm+9dZbvbZ7773XspaI67w558/ryJEjLetOfMieu+++2/KsWbNi++k8ailNuGsfsu+mm26yHO76XVZWZvmYY46xPG/ePK9fq1atMjQ6qGeffTa27dprr83oYx977LGW9TU83OmR53j2bdy40XI4P/oZqGPHjpYpO02Wlu3rfDjn3JdffnnQnxk2bJh3rbuh5jteFQAAAAAAEdwsAgAAAAAiuFkEAAAAAETkzJrFJPzrX/+yvHnzZq9N11aFW4OPGDEiswODc865s846y3KqdRFdu3a1fMQRR2RySBDvvPOO5fvuu89ri1unGK491WNPrrzyyoRHiMrasGGDZV13Ec6jXutxQr169fL66ZEquibZOecaN25cucHCfPTRR951p06dLOvxNeE8jhs3zrI+Hxs2bJj0EJGGZcuWede1a9e2XL9+/Yw+9ssvv2xZX8PD/SLi1mNVN+FRFFu2bLGsx60551zdunXL/fv1tfiuu+7y2u6//37L4T4Nv/3tby0PHTq03I+LA/bs2eNdP/7445YHDRoU269mzQO3Tj/5yU8sDxw4MOkh5gy+WQQAAAAARHCzCAAAAACIyPsyVC2P69u3r+WwlEK/yr/88su9Nt1SGpnTpEkTy4cddpjXpuWLv/vd76psTDhAnzPh/IQlOf8Tlr21b9/eMqVuuef555+3rKVoYVm4XmvpXLg9u/6Ob3/7215bWHKH8nnrrbcsn3feeV6bHg2l720XXHCB10/fEzNd5ohDC19X9TiTpJdchMdODR482LK+nof/Zpo3b57oOPKVHjvjnH8swmWXXea19ezZ07K+J4ZHuK1YscKy/t3Dfvq6OmPGDK/t0ksvPeTYEW/27NmWhw8f7rUVFxdb1jkIjwjTJRejR4+2XMifefhmEQAAAAAQwc0iAAAAACCCm0UAAAAAQESNsBY3kLIxG5555hnv+uGHH7Yc1nYr3eo43Ib86KOPTmh0iapx6C5py7l51GNOnHNu1apVli+88ELLBbD9ft7M486dOy2/9NJLXtttt91muaSkxPLNN9/s9evSpYtlXb9YAPJmHlPR1099nqV6H9A1OGE/Xdv49ttve216VE4Oydl5DP+2esRTeBSUbt1+xhlnWJ4yZYrXr02bNkkOMZfk7DymokeeOOfc4sWLLa9cudJyvXr1vH76PNPn45o1a7x+t99+u+UFCxZ4bZ999pnlWrVqWV6yZInXr1WrVvH/AcnLm3n8+OOPLY8dO9ZrmzhxouW1a9da7tixo9dv27ZtlnUewz02dH+H5cuXe21FRUXlGXZVydl5DNfu6jrhL774wmsL92D4n3Ct/vjx4y3/6le/quwQc0nsPPLNIgAAAAAggptFAAAAAEBE3pWh6tbvzjnXr18/yxs3brQcbgXfu3dvy9OnT8/Q6BKVs1/ro1yYx8JQcPOopeD9+/f32rQsXEtwTjrpJK+fbj2u28c7l/xRAAnJ2Xns0aOHdz137tzYvr169bL84IMPWg7f92rXrp3Q6HJOzs5jKvoZxTnnzjzzTMtaotisWTOvnx6tsGPHDsth+WIq+m9Dn+9XX321169z585p/84E5OU8btiwwbsuLS21PHToUMtz5szx+unnbX19nDp1qteva9eulk844YTKDbZq5NQ8pjrSafXq1bE/pyW+elzRjTfe6PXr1q1bJUeYsyhDBQAAAACkj5tFAAAAAEBE3pWh7t6927t+4IEHLA8ZMsTyiSee6PV79dVXLTds2DAzg0tWTn2tjwpjHgsD81gYsj6Pe/futbx+/XrL3/3ud71+ujvxySef7LW99957lsPS02oi6/OYBC0vnTRpkuV77rnH61dWVma5ZcuWB83OOVdcXGw5LF+cMGGC5Tp16lhu0KBBeYedpLycx4ULF3rXffr0sbx161bL+/fv9/rNnz/fsu6MG+62mYfyZh5ffPFFy9/73vcy+VD5iDJUAAAAAED6uFkEAAAAAERwswgAAAAAiMi7NYvVSN7UgCMl5rEwMI+FIevzqMcnHH/88Zar6drDisr6PCIRBTGPI0aMsFxSUmK5ffv2Xr+f//znVTamKlYQ8wjWLAIAAAAAyoGbRQAAAABABGWouYuv9QsD81gYmMfCwDwWBuaxMDCPhYF5LAyUoQIAAAAA0sfNIgAAAAAggptFAAAAAEAEN4sAAAAAgAhuFgEAAAAAEdwsAgAAAAAiDnV0BgAAAACgGuKbRQAAAABABDeLAAAAAIAIbhYBAAAAABHcLAIAAAAAIrhZBAAAAABEcLMIAAAAAIj4P5BHpP4lwyKUAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1152x144 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 30%|██▉       | 281/937 [00:02<00:05, 123.99it/s]\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-39-fcdfea6855e0>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     16\u001b[0m         \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mTrain_batches\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtrain_dataset\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtotal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTrain_batches\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     17\u001b[0m     ):\n\u001b[1;32m---> 18\u001b[1;33m         \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtrain_x\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     19\u001b[0m         \u001b[1;31m# print(model.disc.trainable_variables[0].numpy()[0][0])\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     20\u001b[0m     \u001b[1;31m# test on holdout\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m    883\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    884\u001b[0m       \u001b[1;32mwith\u001b[0m \u001b[0mOptionalXlaContext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_jit_compile\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 885\u001b[1;33m         \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    886\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    887\u001b[0m       \u001b[0mnew_tracing_count\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\def_function.py\u001b[0m in \u001b[0;36m_call\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m    915\u001b[0m       \u001b[1;31m# In this case we have created variables on the first call, so we run the\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    916\u001b[0m       \u001b[1;31m# defunned version which is guaranteed to never create variables.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 917\u001b[1;33m       \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_stateless_fn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m# pylint: disable=not-callable\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    918\u001b[0m     \u001b[1;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    919\u001b[0m       \u001b[1;31m# Release the lock early so that multiple threads can perform the call\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\function.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m   3038\u001b[0m        filtered_flat_args) = self._maybe_define_function(args, kwargs)\n\u001b[0;32m   3039\u001b[0m     return graph_function._call_flat(\n\u001b[1;32m-> 3040\u001b[1;33m         filtered_flat_args, captured_inputs=graph_function.captured_inputs)  # pylint: disable=protected-access\n\u001b[0m\u001b[0;32m   3041\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3042\u001b[0m   \u001b[1;33m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[1;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[0;32m   1962\u001b[0m       \u001b[1;31m# No tape is watching; skip to running the function.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1963\u001b[0m       return self._build_call_outputs(self._inference_function.call(\n\u001b[1;32m-> 1964\u001b[1;33m           ctx, args, cancellation_manager=cancellation_manager))\n\u001b[0m\u001b[0;32m   1965\u001b[0m     forward_backward = self._select_forward_and_backward_functions(\n\u001b[0;32m   1966\u001b[0m         \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\function.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[0;32m    594\u001b[0m               \u001b[0minputs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    595\u001b[0m               \u001b[0mattrs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mattrs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 596\u001b[1;33m               ctx=ctx)\n\u001b[0m\u001b[0;32m    597\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    598\u001b[0m           outputs = execute.execute_with_cancellation(\n",
      "\u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages\\tensorflow\\python\\eager\\execute.py\u001b[0m in \u001b[0;36mquick_execute\u001b[1;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[0;32m     58\u001b[0m     \u001b[0mctx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mensure_initialized\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     59\u001b[0m     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,\n\u001b[1;32m---> 60\u001b[1;33m                                         inputs, attrs, num_outputs)\n\u001b[0m\u001b[0;32m     61\u001b[0m   \u001b[1;32mexcept\u001b[0m \u001b[0mcore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     62\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "epoches = 50\n",
    "losses = pd.DataFrame(columns = ['gen_loss', 'disc_loss'])\n",
    "def plot_reconstruction(model, nex=8, zm=2):\n",
    "    samples = model.generate(tf.random.normal(shape=(Batch_size, gen_unit)))\n",
    "    fig, axs = plt.subplots(ncols=nex, nrows=1, figsize=(zm * nex, zm))\n",
    "    for axi in range(nex):\n",
    "        axs[axi].matshow(\n",
    "                    samples.numpy()[axi].squeeze(), cmap=plt.cm.Greys, vmin=0, vmax=1\n",
    "                )\n",
    "        axs[axi].axis('off')\n",
    "    plt.show()\n",
    "\n",
    "for epoch in range(epoches):\n",
    "    # train\n",
    "    for batch, train_x in tqdm(\n",
    "        zip(range(Train_batches), train_dataset), total=Train_batches\n",
    "    ):\n",
    "        model.train(train_x)\n",
    "        # print(model.disc.trainable_variables[0].numpy()[0][0])\n",
    "    # test on holdout\n",
    "    loss = []\n",
    "    for batch, test_x in tqdm(\n",
    "        zip(range(Test_batches), test_dataset), total=Test_batches\n",
    "    ):\n",
    "        loss.append(model.compute_loss(test_x))\n",
    "    losses.loc[len(losses)] = np.mean(loss, axis=0)\n",
    "    # plot results\n",
    "    #display.clear_output()\n",
    "    print(\n",
    "        \"Epoch: {} | disc_loss: {} | gen_loss: {}\".format(\n",
    "            epoch, losses.disc_loss.values[-1], losses.gen_loss.values[-1]\n",
    "        )\n",
    "    )\n",
    "    plot_reconstruction(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
